/***
 * 9999 + 111
 * 
 */

// 将大数字拆小，小数之间做运算，然后有近位存到对应的数组对应的位置。
// 先转串，取长度最大的 定义一个新的数组。如： maxValueLength = [,,,,] 有4位。    [0,1,1,1]
// 维护 一个记录进位的数字 count = [1,1,1] 可以不用数组，直接一个记位 count = 1
// 利用循环从后往前，做加法，对应的位置做进位处理
// 最后合计输出
function sum(a,b) {
    a = a.split('').map(Number).reverse();
    b = b.split('').map(Number).reverse();

    let result = [];
    let count = 0;
  
    let i = 0;
    let j = 0;
  
    while (i < a.length || j < b.length || count > 0) {
      let d1 = i < a.length? a[i] : 0;
      let d2 = j < b.length? b[j] : 0;
  
      let total = d1 + d2 + count;

      count = Math.floor(total / 10);
      result.push(total % 10);
  
      i++;
      j++;
    }
  
    return result.reverse().join('')
}


  
let num1 = '9999';
let num2 = '111';
console.log(sum(num1, num2));